// $Id: Reset.h,v 1.7 2010-06-29 22:07:16 scipio Exp $

/*                                                                        tab:4
* Copyright (c) 2000-2003 The Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
* - Neither the name of the University of California nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Copyright (c) 2002-2003 Intel Corporation
* All rights reserved.
*
* This file is distributed under the terms in the attached INTEL-LICENSE
* file. If you do not find these files, copies can be found by writing to
* Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA,
* 94704. Attention: Intel License Inquiry.
*/

/*
* Authors: Wei Hong
* Intel Research Berkeley Lab
* Date: 7/15/2002
*
*/

/**
* @author Wei Hong
* @author Intel Research Berkeley Lab
*/


void resetMote()
{
#if defined(PLATFORM_MICA) || defined(PLATFORM_MICA2) || defined(PLATFORM_MICA2DOT) || defined(PLATFORM_MICAZ) || defined(PLATFORM_IRIS)
            cli();
          wdt_enable(0);
          while (1) {
                  __asm__ __volatile__("nop" "\n\t" ::);
          }
#elif defined(PLATFORM_TELOS) || defined(PLATFORM_TELOSB) || defined(PLATFORM_EPIC) || defined(PLATFORM_SHIMMER) || defined(PLATFORM_SHIMMER2) || defined(PLATFORM_SPAN)
        WDTCTL = 0;
#elif defined(PLATFORM_MULLE)
            PRCR.BIT.PRC0 = 1; // Turn off protection on CM registers.
            PRCR.BIT.PRC1 = 1; // Turn off protection on PM registers.
            CM0.BIT.CM0_6 = 1;
            PM1.BIT.PM1_2 = 1; // Reset on WDT underflow.
            WDTS = 1; // Start watchdog timer.
            PRCR.BIT.PRC0 = 0; // Turn on protection on CM registers.
            PRCR.BIT.PRC1 = 0; // Turn on protection on PM registers.
            while (1); // Wait for underflow in the watchdog timer.
#else
#error "Reset.h not defined/supported for your platform, aborting..."
#endif
}


